Hello, it has been quiet here the last week, Rseding is back in America, Albert is in Spain, and some people have holidays. I have been programming until 9:30pm and then I realized I have to write Friday Facts, so it is going to be shorter today, although this happens quite often to me.
Hello, since we started with the Friday Facts series, it seems to me that the Fridays have been coming more and more often. So here we are again with the handful of fresh news from the Factorio back stage. There is a good news and an even better news regarding the 0.8 release. The good news is that we have a definitive release date now. The date has been set to the Friday, the 6th of December. The even better news is that it will be Kovarexs' birthday the day before that, so there will be two reasons to celebrate on that Friday night:). On Tuesday the first ever "FactorioCon" took place. It was not really a conference, more like a spontaneous meeting. Here is what happened. In the reaction to the previous Friday post we got a message from one of our players on the forums, that he would be coming to Prague for the week. So we agreed to grab a beer on Tuesday night. In the beginning it was supposed to be just me and Kovarex but in the end all the Factorio team was present and even two more of our fans from Prague came (my brother and a friend of his:)). So we were 7 people. We took a beer and snacks in a pub by the river and had a good chat about the game (and life - the usual topic of pub chats). Most of the map editor functionality, mentioned in the last post is done. This occupied the majority of my time over the past week. Now it is actually a pleasure to work with . Maybe it is a subjective feeling, because I had to do some maps with the old editor:) Anyway the mechanism of layers and tools is in place and easy to extend in the future. So we will release the new editor into the wild, gather the feedback from people on the forum and then incorporate it back in if necessary. Includes. They are killing us. Factorio is written in C++ which has an old-school-textually-include-stuff approach to referencing objects in other files. This means that the compile time goes up fast with the growing codebase. Compile time is very unproductive kind of time. And it has been going up steadily. At the moment the Factorio core code base has almost 130k lines of code and it takes a fair amount of time to compile. My 2011 MacBookPro 13" takes already around 8 minutes to build the whole project from scratch. Sometime I take the time to wash the dishes or do a bit of exercise. But most of the time I just kill those 8 minutes by surfing the web or staring at the rolling compilation log. To battle this we have spent quite some time pruning the includes in the past days (it has not been the first time). Kuba was playing with some existing clang include analyzers while Kovarex wrote his own small tool to gather include statistics and try the trial and error include removal (remove - try compile - iterate). This is what the game development includes (pun intended) as well. Albert has defeated the deamons of the water and now he started integrating the new terrains together. On the other hand we are still struggling with the algorithm for correcting the terrain border transitions. The fail attempt number 5 (I think) is called "the weeping terrain": To keep the tradition rolling, the thread for comments is available on our forum.
Hello, the summer is officially over soon. I have this tradition of denying it by wearing just a t-shirt as long as possible, so I'm getting less and less comfortable outside until I accept the defeat by the cold weather. The experience is, that the short days and ugly weather speeds up the work on Factorio as we tend to stay inside and code all the time.
Hello, the spring officially started today here in the Czech republic and it is really beautiful weather here. This is nice, because the "I need to have a break" kind of strolls are much more enjoyable now. I don't want you to confuse with terms you don't know, so you can read in this lengthy article that players can be roughly divided into 4 basic categories Achiever, Explorer, Killer and Socialiser. I believe that I'm 50% achiever 25% explorer and 25% killer, so one of the (many) things I wanted to have for Factorio to be different than just industrially modded Minecraft was to offer the satisfaction for achievers like me. This is the reason why the player is under the pressure of biters that evolve over time instead of having all the time on the world to play and fiddle with factory setups. The achiever wants to fight through the obstacles to get to the goal, but the goal has to be difficult to be meaningful. When I played Starcraft II mission on brutal and I won on the first try, I was dissatisfied, because it was too easy. When I had to fail 3 times to understand the level mechanics and requirements to be able to beat the level after another 2 tries, that was the thing I loved. I loved that I had to think about timings and different approaches to problems and search for combination of the choices that work the best. But how to do it? How to satisfy us, achievers, in Factorio? How to do it, so non-achievers or beginners will not be discouraged? This is the way I believe should be done in the future: Provide much more balanced starting conditions on freeplay (some way of balancing nearby resources to contain the same amounts at least), and provide way to share starting seed so players can compare results on the exact same world. Add difficulty settings for the freeplay (they are not now) that would really make a difference in more aspects of the game, like enemy evolution/expansion speed, aggressiveness, pollution spread etc.so finishing on the hardest difficulty would really be a challenge. Provide something measurable that could be achieved (apart just finishing the game), trying to minimize the time seems like one of the possible solutions, because I really love the kind of strategic thinking, where every decision matters. Provide achievements. It is quite mainstream these days, and I believe that there is a good reason for it. It just satisfies us, achievers, and gives us directions as long as these achievements really mean something like: Finish the game under X hours on some preset settings. Accumulate 1 000 000 electronic circuits under X hours, or the other way around, accumulate the biggest amount of electronic circuits possible in 3 hours. Score some big amount of points in the tight spot missions. Make online leaderboards of the these on our site (Another use of the accounts already have). I'm sure there is much more we can do in this direction. The more I think about this, the more I want it :) The bugfix release of 0.9.4 has been released today and we believe there are just few things to be fixed to have the final stable release so we started to plan for the multiplayer today. We just had a first small meeting and you can see our plan of battle. We will consider it very naive in the upcoming weeks for sure, but better some plan than no plan :) I'm quite curious what do you think about this, so don't hesitate to comment on our forums.
Hi everyone, Two months went pass like that and I am back from south India to the winterish Prague. I had a great time full of Yoga, relaxation, new experiences and of course occasional remote work on Factorio over frustratingly bad internet connection. Now my (and whole teams) focus is clear: stabilize the multiplayer, finish the endgame content and prepare the game for Steam release.
The tradition is to open the friday facts by saying, that the new bugfix release is here, as well as saying that this one is definitely going to be the stable one. But this time we really think that 0.9.8 is going to be the one :). We spent very little time with the 0.9 branch as many things for 0.10 are in motion. As we already said we planned to start using the automated testing, and this week, Tomas finally achieved to revive the testing suite, so we will slowly cover the source code by tests while working. Not only this is needed for the reasons already said, but we need to test all the otherwise hard to test corner cases in network communication logic that is Kuba giving the basic shape to. I'm now doing the hard work of fixing the small errors in determinism. I play the game, while it is saved periodically, then I have to start the replay wait for diversion from the original and find out why it happened by inspecting the differences in the saves. This is cumbersome process, as some of the inconsistencies are very hard to find, but after a few days and several bugfixes, I was able to replay the first tutorial mission without errors while certainly making a new world record of the time to finish the mission :) I gave myself approximately 1.5 hours daily to play computer games, and when playing these and reading Ideas and suggestions on our forums, it gives me so many ideas of what could be done. It is depressing to know, that all of these ideas, even when considering just the good ones, are just not possible to be made. Fight mechanics, alien pets, water-heating/cooling circuits, other planets, supplying orbit, satellites, ending of the game, different vehicles, airplanes, late-game rts controls of building and combat robot minions, equipment (as in armor) based blueprints for combat robots, enemy/neutral/allied survivors, after-landing phase where you have to take care of the people, caves and underground mining, armored trains, 20 different additions to circuit network, nuclear energy that is not just boiler that runs on uranium, 10 different enemies with different types of behaviours and attacks, different types of enemy bases, forests on fire, working eco-system, other downsides of pollution, snow areas with snow particles on machines, rare random Fallout-like encounters, different energy sources, advanced train controls, disasters, flowing rivers, more complex mechanics of armor equipment, ... I could continue like this for a long time. We have already Ideas & suggestions section on our forums, but it might be nice to have something more organised, so people could add their ideas and vote/discuss what they think should have priority, or maybe there is a way how to do it directly on the forum, ideas? I was also thinking, that we might do some kind of technical development blog posts like this one about Starcraft 1 as we are certainly facing some interesting challenges or hard decisions from time to time, would anyone be interested in that? The following picture is the new version of basic electric pole. The main reason for the change was to make it less obstruct the view of the tiles behind and to avoid having the cable and the pole fall loosely when the cable has vertical direction. We are always eager to learn what you think at our forums.
Hello, this week the Friday Facts are coming a little bit earlier. The reason is that in the evening I will be lost somewhere in the middle of Brno (second biggest city in the Czech Republic). I will participate in a popular annual deciphering game that is taking a place there. The 0.7.5 with another batch of bugfixes went out this Tuesday. Since then there has been no reports regarding major issues or crashes. Couple of teeny-tiny bugs were reported however that is not enough for us to make a new release now. So the 0.7.5 will become a stable version. Finally:) I have spent most of the time during the past week working on the trailer. The first version has been done already. There is a discussion thread on our forum (with a link to the unlisted video on youtube) where people can give us feedback about it. This is by far not finished. But we needed to get it out in order to start talking to the music & sound guy and give him some baseline to work with. Yesterday we had a long chat with Albert about the trailer and we agreed that the first scene (standing in the middle of the ruins) should be changed. Now it feels too out of the context from the rest. Apart from that we are quite happy with the general flow. Of course there are plenty of details that need to be tweaked so there is still a long way to go. On the other hand having all the trailer in the script makes things a hell lot easier for us. Changing things like the zoom behavior, camera movement or speed is just a breeze. Same goes for extending / shortening the scenes or adding a new scene all together. Another issue is the final video quality. There is a lot of movement going on in the trailer and currently after youtube compression, often the video is just blurry. We have used the 720p for now but that proved not to be enough. Oh and regarding the music. Just for fun we tried to run the Raymond Scott's Twilight in Turkey together with the trailer. It turned out to work surprisingly well, so one option is that the music would go in this kind of direction. Apart from preparing the 0.7.5 Michal spent most of the time on the new scenarios for the main campaign. It starts to slowly shape. At the moment there are 5 levels that introduce basic things like assembling machines, research, trains, etc. to the player in the course of playing. Often the player is not starting from the scratch but he can use already existing pieces of the factory. Writing the scenarios (and the trailer) is also a good opportunity for us to review, document and extend the Lua API. Kuba and Albert keep working together on the terrain. There are couple of variations of the dirt by now and Albert is now spending his evenings with the grassy terrain. Kuba made couple of Blender scripts to ease the manual terrain work. This way Albert can take advantage of generated tileable noise or terrain transitions. Also yesterday Kuba showed me a great picture he generated that I can't resist to share with you. In case that you always thought that there is a lot of recipes in the game and that the whole thing is too complex, then worry no more. Here is an ultimate Factorio recipe cheatsheet for you: As usual there is a post on our forum where you can discuss this update.
This post was written as a joke for April Fools' day. Nothing written here should be taken seriously. No doubt you have heard about NFTs, the latest Blockchain innovation. With some big gaming companies exploring NFTs, where does Factorio stand? We have received many offers. Some of the offers were quite silly, others very tempting. Since we have many Blockchain enthusiasts on the team, we decided to explore the subject ourselves. After consulting with some industry-leading experts on Discord, this is what we came up with: Non-fungible blueprints One of the many subjects of debate within the team is the blueprint library. Allowing players to easily share big blueprints (blue science, nuclear reactor setup, etc.) ruins the fun of figuring out how to build those things yourself. One of the best things about the blueprint library is that it contains your unique blueprints, which are almost like unique pieces of art. So it only makes sense to make them truly unique, using the Blockchain, NFT, and Smart Contracts technologies. What this means is that every blueprint in the blueprint library will now be stored on the Blockchain, and they will be truly unique across all of the blueprint libraries of all players. Just like NFTs, they can be traded on the Blockchain, also making them a great speculative asset. In essence your blueprint library will become your personal wallet, containing only the unique blueprints that you own. Unlike most NFTs, blueprints are created (minted) by the players, making it a truly decentralized system, controlled by the smart contracts we created. In order to guarantee uniqueness we will use AI and Machine Deep Learning to analyze any new blueprint before it is minted, this way you won't be able to just move one power pole and mint a copy. Once again, making blueprints truly unique. Our own Play-to-earn cryptocurrency Limiting the creation (minting) of new blueprints using just the AI will not be enough. To ensure the Blockchain is not flooded with useless blueprints, we will also create a cryptocurrency called Factorio Blueprint Token ⚙️. You will need to pay 1,000 of them to mint 1 new unique blueprint. Factorio Blueprint Tokens ⚙️ are earned from Space Science using a variable conversion rate we will control. Since you can now earn crypto by just playing the game, the game basically pays for itself. Factorio Blueprint Tokens ⚙️ come with all the advantages of a proof-of-work cryptocurrency, and all the fun of playing Factorio and optimizing factories for maximum UPS. Some say that Factorio offers so much value for money, that they paid more for the electricity bill than they paid for the game, so we are happy to take it to the next level. We will host an Initial Coin Offering (ICO) for Factorio Blueprint Token ⚙️, so make sure you invest as much as you can and HODL it, in the hopes that someone will tweet about it making the price go to the moon 🚀🌘. Click here to take part in the ICO.
Hello, after a long long time the 0.9.8 was marked stable this week. There were no big ovations or cheering, just a quite "stable sticker exchange":) The bugs forum is not empty though, as someone would expect. Quite a few small issues remain, but for the sake of moving on we decided to put them to our backlog and mark the release as stable. However if some game crashing or very serious bugs are discovered in 0.9.8, we will make a hotfix. Oh, and the good thing is that we managed to break the streak (for now) of ever increasing number of bugfix releases (the 0.9 had 8 bugfix releases - the same as 0.8). The whole "programming department" has been fully commited to the work on multiplayer for a while now. The task divison for now is following: Michal - fully deterministic simulation. This is an absolute must, because all multiplayer peers will calculate the simulation themselves and only the player input (we call it input actions) will be exchanged over the network. Nice effect of having deterministic simulation will be having functional replays again (hmmm not really again because there have always been some bugs in them even when they were "working":)). Kuba - lower level network layer. This includes the connection management, packets management (we will be using UDP for all the communication) and eventually things like NAT punching to allow connections for peers behind NAT (few people have public IP address). Tomas - synchronization layer. This logic will take care of keeping the simulation state same for all the players in the game. This includes queing up the input actions, sending them out in batches (tick closures to other peers), requesting missing tick closures, etc. These things are absolute minimum necessary for our multiplayer implementation. However there is more to be done after this, things like: starting the game (the lobby), mechanism for a player joining already existing game, hiding the latency for the player (most of the time the actions for different players will not collide so we can act as if common actions - like moving the player around - were confirmed immediately) and more (see our battleplan whiteboard in one of the previous friday facts). There is a lot of work ahead, but the good news is that we have finally fully dived into it. We will keep you updated about the progress:) Albert has finished with most of the map trailer tweaks. Today we also did a first test with exporting the trailer using the new screenshot mechanism. We did this on Michal's computer which is way more powerful than mine (it does take a while to export 3600 screenshots). However there was this funky bug that parts of the terrain in the screenshots had strange, kind of inverted, colors. We have spent like half a day looking into this issue. Finally it turned out to be a problem in our custom optimized version of d3d drawing routine (this was happening on windows only). Spending hours in frustration hunting bugs (that are not even visible to the player in the end) happens more often than you would think, so game programming is not just about sitting back, playing video games and calling it "research" (but that is part of the job too:)) Anyway to give you an idea of what was going on you can see a visualization of the problem below. For better effect (and for us to easier analyze the problem) the corrupted regions of the image (here all of the terrain) are drawn with reddish overlay. Any idea for the picture title? Want to cheer us up for the multiplayer work? Or feel like laughing at us for taking so long with the trailer? Go to our forums.